iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

探索 Spring Boot Doc系列 第 24

Doc 18.1.1. Create Your Own FailureAnalyzer

  • 分享至 

  • xImage
  •  

FailureAnalyzer is a great way to intercept an exception on startup and turn it into a human-readable message, wrapped in a FailureAnalysis. Spring Boot provides such an analyzer for application-context-related exceptions, JSR-303 validations, and more. You can also create your own.

FailureAnalyzer 是在application 啟動之初去攔截例外並將例外轉換成人類可閱讀的訊息,
被 FailureAnalysis 所包裹。Boot 提供針對 application-context 例外、JSR-303 檢驗之類的分析器,使用者也可以自行創建屬於自己的分析器。

注意這裡特別強調,攔截的例外是在應用啟動之初,如果是應用運行過程就應該透過 ExceptionHandler 去處理。

下方為 Class FailureAnalysis 文件說明,
隸屬於 org.springframework.boot.diagnostics 包之下(diagnostics: 診斷)

https://ithelp.ithome.com.tw/upload/images/20231008/20161770SYopH419Rd.png

下方為 Functional Interface FailureAnalyzer ,同樣也屬於 boot.diagnostics 包之下
https://ithelp.ithome.com.tw/upload/images/20231008/20161770tNkAlSGLbb.png

在唯一的方法之中,去捕捉 Throwable 類別,其囊括所有的 Checked 、Unchecked Exception 。

這裡提一下 JSR-303( 其中 Java Specification Request), 網路上最常看到的解釋為
其為 Java EE 6 中的一项子规范,根據 IBM 關於 JavaEE 6 的support 清單來看,JSR-303 這一規範是 JavaEE6 開始support ,規範的實作由 Hibernate Validator。

AbstractFailureAnalyzer is a convenient extension of FailureAnalyzer that checks the presence of a specified exception type in the exception to handle. You can extend from that so that your implementation gets a chance to handle the exception only when it is actually present. If, for whatever reason, you cannot handle the exception, return null to give another implementation a chance to handle the exception.

AbstractFailureAnalyzer 是 FailureAnalyzer 的一個便捷擴展,用於檢查異常中是否存在指定的異常類型以進行處理。可以從 AbstractFailureAnalyzer 擴展,這樣就可以在遇到這個例外發生之時,有機會去處理它。當遇到你無法處理的例外時候,就回傳 null 去給其他實作來處理這個例外。

這裡 AbstractFailureAnalyzer 從名稱就知道他是一個抽象類別,這個抽象類別給了我們一個很好的起手式,比起一無所知就你去實現一個 Functional Interface FailureAnalyzer 還來得好。

下方可以看到 AbstractFailureAnalyzer 除了原本實作 FailureAnalyzer,另外可以看到有額外三個方法的擴充。

https://ithelp.ithome.com.tw/upload/images/20231008/20161770dSkOi5gqv7.png

參考資料
{官方} FailureAnalysis
https://docs.spring.io/spring-boot/docs/3.1.4/api/org/springframework/boot/diagnostics/FailureAnalysis.html

{官方} FailureAnalyzer
https://docs.spring.io/spring-boot/docs/3.1.4/api/org/springframework/boot/diagnostics/FailureAnalyzer.html

{IBM} JavaEE 6 支援規範
https://www.ibm.com/docs/zh-tw/was-liberty/zos?topic=architecture-java-ee-6-programming-model-support

一文學會JSR-303 檢驗
https://cloud.tencent.com/developer/article/1698678


上一篇
Doc 7.1.1 Startup Failure
下一篇
Spring AbstractFailureAnalyzer 實例
系列文
探索 Spring Boot Doc30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言